﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

//1.函数重载；C++中，函数的名称可以重复；
//4.必须要在同一作用域，函数名称相同；
//5.函数的参数，个数不同或类型不同，或者顺序不同；
void funcOverload()
{
	cout << "2.无参数的funcOverload；" << endl;
}
void funcOverload(int a)
{
	cout << "3.有参数的funcOverload(int a)；" << endl;

}
void funcOverload(double a)
{
	cout << "6.有参数的funcOverload(double a)；" << endl;

}
void funcOverload(double a, int b)
{
	cout << "7.有参数的funcOverload(double a,int b)；" << endl;

}
void funcOverload(int a, double b)
{
	cout << "8.有参数的funcOverload(int a,double b)；" << endl;

}
//9.返回值不可以作为函数的重载条件；
/*
int funcOverload(int a, double b)
{
	cout << "8.有参数的funcOverload(int a,double b)；" << endl;
	return 1;
}*/
//10.当函数重载，遇到默认参数时，要注意避免二义性问题；
/*
void funcOverload(int a, int b = 50)
{
	cout << "3.有参数的funcOverload(int a)；" << endl;

}*/
//11.引用的重载版本；
//14.引用必须要引合法的内存空间；
void funcRefOverload(int& a)
{
	cout << "12.引用int &a；" << endl;
}
//15.const也是可以作为重载的条件；int tmp=10; const int& a=tmp;
void funcRefOverload(const int& a)
{
	cout << "13.引用const int &a；" << endl;
}
void testFuncOverload()
{
	funcOverload();//2.无参数的funcOverload；
	funcOverload(1);//3.有参数的funcOverload(int a)；
	funcOverload(1.1);//6.有参数的funcOverload(double a)；
	funcOverload(1.1, 3);//7.有参数的funcOverload(double a,int b)；
	funcOverload(4, 3.14);//8.有参数的funcOverload(int a,double b)；

	int a = 60;
	funcRefOverload(a);//12.引用int &a；
	funcRefOverload(70);//13.引用const int &a；
}
class PersonOverload
{
	void funcOverload();
};

//main250：函数重载的基本语法
int main250()
{
	testFuncOverload();

	system("pause");
	return EXIT_SUCCESS;
}